<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>关键问题2</title>
</head>
<body>
	<button onclick="demo()">指定回调</button>
  <!-- 
    改变Promise实例状态和指定回调函数谁先谁后?
				都有可能, 正常情况下是：先指定回调再改变状态, 但也可以先改状态再指定回调
					1.如何先改状态再指定回调?
							(1).在执行器中直接调用resolve()/reject()
							(2).延迟更长时间才调用then()
					2.什么时候才能得到数据?
							(1).如果先指定的回调, 那当状态发生改变时, 回调函数就会调用, 得到数据
							(2).如果先改变的状态, 那当指定回调时, 回调函数就会调用, 得到数据
	-->

	<script type="text/javascript" >

		//先指定回调，后改变状态
		const p = new Promise((resolve,reject)=>{
			setTimeout(()=>{
				resolve('hello')
			},1000)
		})

		p.then(
			value => {console.log('成功了',value)},
			reason => {console.log('失败了',reason)}
		)

		//先改变状态，后改指定回调
		/* const p = new Promise((resolve,reject)=>{
			setTimeout(()=>{
				resolve('hello')
			},1000)
		})

		function demo(){
			p.then(
				value => {console.log('成功了',value)},
				reason => {console.log('失败了',reason)}
			)
		} */

				
	</script>
</body>
</html>